
/*
 * Desenvolvimento para WEB
 * 
 * NOME: Vitor Augusto Graciani           RA: 345270
 * NOME: Felipe Petruz Brina              RA: 345083
 * NOME: Diego Zamboni Latance            RA: 344990
 * NOME: Rafael Claudio Domene            RA: 345040
 * NOME: Vinicius Rodrigues de Campos     RA: 345350
 * 
 */
package controle;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.*;

/*
 * Faz a busca dados no banco Faz exclusao dos dados no banco Faz a alteracao
 * dos dados no banco
 */
public class RecebeDadosBusca extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String tipoBusca = request.getParameter("acaoBusca");

        if (tipoBusca.compareTo("buscaTipo") == 0) {
            String buscaTipo = request.getParameter("buscaTipos");
            buscaTipo(request, response, buscaTipo);
        }

        if (tipoBusca.compareTo("buscaCategoria") == 0) {
            String buscaCategoria = request.getParameter("buscaCategoria");
            buscaCategoria(request, response, buscaCategoria);
        }

        if (tipoBusca.compareTo("buscaRanking") == 0) {
            String entidadeAbsoluta = request.getParameter("entidadeAbsoluta");
            String dominioRelativo = request.getParameter("dominioRelativo");
            try {
                buscaEntidadeRanking(request, response, dominioRelativo, entidadeAbsoluta);
            } catch (DAOException ex) {
                Logger.getLogger(RecebeDadosBusca.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        if (tipoBusca.compareTo("buscaEntidades") == 0) {
            String buscaEntidades = request.getParameter("buscaAbsoluta");
            buscaEntidadeAbsoluta(request, response, buscaEntidades);
        }
        if (tipoBusca.compareTo("buscaRelativa") == 0) {
            String buscaRelativa = request.getParameter("buscarelativa");
            buscaEntidadeRelativa(request, response, buscaRelativa);
        }

        if (tipoBusca.compareTo("detalhesEntidades") == 0) {
            int midBusca = Integer.parseInt(request.getParameter("midEntidade"));
            buscaDetalhesEntidades(request, response, midBusca);
        }

        if (tipoBusca.compareTo("buscaCategoriaEntidade") == 0) {
            String categoria = request.getParameter("buscaCategoriaEntidade");
            try {
                buscaEntidadeDeUmaCategoria(request, response, categoria);
            } catch (DAOException ex) {
                Logger.getLogger(RecebeDadosBusca.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    //Busca por tipo no BD
    private void buscaTipo(HttpServletRequest request, HttpServletResponse response, String tipo)
            throws ServletException, IOException {
        try {
            ConsultaTipoDAO buscaTipo = new ConsultaTipoDAO();
            ConsultaTipoBEAN type = buscaTipo.consultaTipo(tipo);
            request.setAttribute("tipoBusca", type);
        } catch (Exception sqle) {
            request.setAttribute("tipoBusca", null);
        }
        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/consultaTipo.jsp");
        rd.forward(request, response);
    }

    private void buscaCategoria(HttpServletRequest request, HttpServletResponse response, String categoria)
            throws ServletException, IOException {
        try {
            ConsultaCategoriaDAO buscaCategoria = new ConsultaCategoriaDAO();
            ConsultaCategoriaBEAN Categoria = buscaCategoria.consultaCategoria(categoria);
            request.setAttribute("CategoriaBusca", Categoria);
        } catch (Exception sqle) {
            request.setAttribute("CategoriaBusca", null);
        }
        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/consultaCategoria.jsp");
        rd.forward(request, response);

    }

    private void buscaEntidadeAbsoluta(HttpServletRequest request, HttpServletResponse response, String entidadeAbsoluta)
            throws ServletException, IOException {

        try {
            ConsultaEntidadeAbsolutaDAO buscaEntidadeDAO = new ConsultaEntidadeAbsolutaDAO();
            EntidadeBEAN buscaEntidade = buscaEntidadeDAO.consultaAbsoluta(entidadeAbsoluta);
            request.setAttribute("EntidadeBusca", buscaEntidade);
        } catch (Exception sqle) {
            request.setAttribute("EntidadeBusca", null);
        }

        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/consultaAbsoluta.jsp");
        rd.forward(request, response);

    }

    private void buscaEntidadeRelativa(HttpServletRequest request, HttpServletResponse response, String entidadeRelativa)
            throws ServletException, IOException {
        try {
            ConsultaEntidadeRelativaDAO buscaRelativaDAO = new ConsultaEntidadeRelativaDAO();
            ArrayList<EntidadeBEAN> relativaBean = buscaRelativaDAO.consultaRelativa(entidadeRelativa);
            request.setAttribute("listaRelativa", relativaBean);
        } catch (Exception sqle) {
            request.setAttribute("listaRelativa", null);
        }
        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/consultaRelativa.jsp");
        rd.forward(request, response);
        //response.sendRedirect("index.jsp");
    }

    private void buscaEntidadeRanking(HttpServletRequest request, HttpServletResponse response, String dominioRelativo, String entidadeAbsoluta) throws IOException, DAOException, ServletException {

        try {
            RankingDAO rankingDAO = new RankingDAO();
            List<RankingBEAN> rankingbean = rankingDAO.consultaRanking(entidadeAbsoluta, dominioRelativo);
            request.setAttribute("listRanking", rankingbean);
        } catch (Exception sqle) {
            request.setAttribute("listRanking", null);
        }
        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/consultaRanking.jsp");
        rd.forward(request, response);
    }

    private void buscaEntidadeDoMesmoTipo(HttpServletRequest request, HttpServletResponse response, String buscaEntidadeMesmoTipo) throws IOException {
        /*consultaEntidadesDoMesmoTipoDAO entidadesDoMesmoTipoDAO = new consultaEntidadesDoMesmoTipoDAO();
         List<RankingBEAN> rankingbean = entidadesDoMesmoTipoDAO.consultaRanking(dominioRelativo,entidadeAbsoluta);
         request.setAttribute("listEntidadesDoMesmoTipo", entidadesDoMesmoTipobean);
         } catch (Exception sqle) {
         request.setAttribute("listEntidadesDoMesmoTipo", null);
         }
         RequestDispatcher rd = null;
         rd = request.getRequestDispatcher("/consultaEntidadesDoMesmoTipo.jsp");
         rd.forward(request, response);*/
        response.sendRedirect("index.jsp");
    }

    private void buscaDetalhesEntidades(HttpServletRequest request, HttpServletResponse response, int midBusca)
            throws ServletException, IOException {

        try {
            ConsultaEntidadeRelativaDAO buscaEntidadeDAO = new ConsultaEntidadeRelativaDAO();
            EntidadeBEAN buscaEntidade = buscaEntidadeDAO.consultaDetalhesEntidade(midBusca);
            request.setAttribute("EntidadeBusca", buscaEntidade);
        } catch (Exception sqle) {
            request.setAttribute("EntidadeBusca", null);
        }

        RequestDispatcher rd = null;
        rd = request.getRequestDispatcher("/detalhesBuscaRelativa.jsp");
        rd.forward(request, response);


    }

    private void buscaEntidadeDeUmaCategoria(HttpServletRequest request, HttpServletResponse response, String categoria) throws DAOException, ServletException, IOException {

        try {
            ConsultaEntidadesDeUmaCategoriaDAO buscaEntidadeCategoria = new ConsultaEntidadesDeUmaCategoriaDAO();
            ArrayList<ConsultaEntidadesDeUmaCategoriaBEAN> buscaEntidadeCategoria2 = buscaEntidadeCategoria.consultaEntidadesDeUmaCategoria(categoria);
            request.setAttribute("ConsultaEntidadeDeUmaCategoria", buscaEntidadeCategoria2);
        } catch (Exception sqle) {
            request.setAttribute("ConsultaEntidadeDeUmaCategoria", null);
        }

        RequestDispatcher rs = null;
        rs = request.getRequestDispatcher("/consultaEntidadesDeUmaCategoria.jsp");
        rs.forward(request, response);

    }
}
